package com.example.com.skills_utf8;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.utils.Utils1;

public class ProgressBarActivity extends Activity{

	
	ProgressBarActivity activity = this;
	ProgressBarAsyncTask pba ;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_progress_bar);
		
		
		Button bt_start =(Button)findViewById(R.id.bt_start);
		bt_start.setOnClickListener( new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
		
				/*  OK
				Dialog dialog = new Dialog(activity);
				dialog.setContentView(R.layout.dialog_progress_bar);
				
				dialog.setTitle("进度条");
				dialog.getWindow().setLayout(250, LayoutParams.WRAP_CONTENT);
				dialog.show();
			*/
				
				/*
				View myView =activity.getLayoutInflater().inflate(
						R.layout.dialog_progress_bar, null);
				
				AlertDialog dialog = new AlertDialog.Builder(activity).create();
				dialog.setContentView(R.layout.dialog_progress_bar);

				dialog.show();
				*/
				
				ProgressDialog dialog = new ProgressDialog(activity);
				dialog.setMax(100);
				dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
				dialog.setCancelable(false);
				dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确认", 
						new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						
						pba.cancel(true);
						dialog.dismiss();
						
					}
				});
				dialog.show();
				
				
				
				pba =new ProgressBarAsyncTask(dialog);
				pba.execute(0, 0, 0);
				
				
				
			}
		});
		
		
		
	}
	
	
	
	
	/**
	 * 生成该类的对象，并调用execute方法之后
	 * 首先执行的是onProExecute方法
	 * 其次执行doInBackgroup方法
	 *
	 */
	public class ProgressBarAsyncTask extends AsyncTask<Integer, Integer, String> {

		private ProgressDialog mProgressDialog;
		
		
		public ProgressBarAsyncTask(ProgressDialog dialog ) {
			super();
			
			this.mProgressDialog = dialog;
		}

		
		/**
		 * 这里的Integer参数对应AsyncTask中的第一个参数 
		 * 这里的String返回值对应AsyncTask的第三个参数
		 * 该方法并不运行在UI线程当中，主要用于异步操作，所有在该方法中不能对UI当中的空间进行设置和修改
		 * 但是可以调用publishProgress方法触发onProgressUpdate对UI进行操作
		 */
		@Override
		protected String doInBackground(Integer... params) {
			int i = 0;
			for (i = 10; i <= 100; i+=10) {
				
				Utils1.do_hardwork();
				publishProgress(i);
			}
			return i + params[0].intValue() + "";
		}


		/**
		 * 这里的String参数对应AsyncTask中的第三个参数（也就是接收doInBackground的返回值）
		 * 在doInBackground方法执行结束之后在运行，并且运行在UI线程当中 可以对UI空间进行设置
		 */
		@Override
		protected void onPostExecute(String result) {
	//		textView.setText("异步操作执行结束" + result);
			mProgressDialog.dismiss();
		}


		//该方法运行在UI线程当中,并且运行在UI线程当中 可以对UI空间进行设置
		@Override
		protected void onPreExecute() {
	//			textView.setText("开始执行异步线程");
		}


		/**
		 * 这里的Intege参数对应AsyncTask中的第二个参数
		 * 在doInBackground方法当中，，每次调用publishProgress方法都会触发onProgressUpdate执行
		 * onProgressUpdate是在UI线程中执行，所有可以对UI空间进行操作
		 */
		@Override
		protected void onProgressUpdate(Integer... values) {
			int vlaue = values[0];
			mProgressDialog.setProgress(vlaue);
		}

		
		
		@Override
		protected void onCancelled() {
			// TODO Auto-generated method stub
			super.onCancelled();
			
			System.out.println("任务取消.");
		}
		
		
		

	}
	
	
	
	
	
}
